package com.xulinhao.sportplay.dao;

import com.xulinhao.sportplay.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author xulinhao
 * @create 2021-07-12 21:21
 */
@Repository //将接口的方法交给Spring管理
public interface UserDao {
    /**
     * 根据用户名和密码获取数据库easyuser中的用户信息
     * @param username 用户名
     * @param password 密码
     * @return 用户实体
     */
    public User getUserByMessage(@Param("username") String username, @Param("password") String password);

    /**
     * 获取用户列表,配合搜索栏和分页
     * @param username 用户名
     * @param pageStart 起始页
     * @param pageSize 分页数量
     * @return 用户列表
     */
    public List<User> getAllUsers(@Param("username") String username, @Param("pageStart") int pageStart, @Param("pageSize") int pageSize);

    /**
     * 获取用户数目
     * @param username 用户名
     * @return 用户数
     */
    public int getUserCount(@Param("username") String username);

    /**
     * 更新用户状态
     * @param id 用户id
     * @param state 用户状态
     * @return 影响行数
     */
    public int updateState(@Param("id") Integer id, @Param("state") Boolean state) ;

    /**
     * 增加用户
     * @param user 用户实体
     * @return 影响行数
     */
    public int addUser(User user);

    /**
     * 删除用户
     * @param id 用户主键序号
     * @return 影响行数
     */
    public int deleteUser(@Param("id") int id);

    /**
     * 获取想要更新的用户
     * @param id 用户id
     * @return 待更新的用户实体类
     */
    public User getUpdateUser(@Param("id") int id);

    /**
     * 更新用户
     * @param user 待更新的用户
     * @return 影响行数
     */
    public int editUser(User user);
}
